/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package fanta.framework.dao;

import fanta.framework.manager.ConnectionManager;
import fanta.framework.persistence.Formazione;
import fanta.framework.persistence.Giocatore;
import fanta.framework.persistence.Giornatelega;
import fanta.framework.persistence.Team;
import java.util.ArrayList;
import java.util.Collection;
import javax.persistence.EntityManager;
import org.apache.log4j.Logger;
/**
 *
 * @author Claudio Rossi
 */
public class FormazioneDAO {
    private static final Logger logger = Logger.getLogger(TeamDAO.class);

    public static Formazione creaFormazione(String nome, Giocatore giocatore, Team team,  Giornatelega giornata, boolean titolare, ConnectionManager cm) {
        EntityManager entityManager = (EntityManager) cm.getEntityManager();
        Formazione formazione = new Formazione();
        try {
            entityManager.getTransaction().begin();
            logger.debug("Start Transaction");
            formazione.setIdgiocatore(giocatore);
            formazione.setIdteam(team);
            formazione.setIdlegagiornata(giornata);
            formazione.setTitolare(titolare);
            entityManager.persist(formazione);
            logger.debug("Transaction persisted");
            entityManager.getTransaction().commit();
            logger.debug("Transaction committed");
            logger.info("New formazione:"+formazione);

        } catch (Exception e) {
            logger.error("Errore in FormazioneDAO", e);
            logger.debug("##EXCEPTION## Transaction will be roll back");
            entityManager.getTransaction().rollback();
            logger.debug("Transaction rolled back!");
        }
        return formazione;
    }

    public Collection cercaFormazioneByTitolare(Boolean titolare, ConnectionManager cm) {
        Collection listaForm = new ArrayList<Team>();

        try {
            EntityManager entityManager = (EntityManager) cm.getEntityManager();
            listaForm = entityManager.createNamedQuery("Giocatore.findByTitolare").setParameter("titolare", titolare).getResultList();
        } catch (Exception e) {
            logger.error("#EXCEPTION# in cercaFormazioneByTitolare!", e);
        }
        
        return listaForm;
    }

}
